集合 -> 无序,不重复 -> 可变的数据类型,但是里面的元素必须是不可变的数据类型

1. 创建集合

  • 普通创建

set1 = {1, 2, 3, 4}

  • set() 创建

set1 = set({1, 2, 3, 4})

1. 增

  • .add('xxx')

set1 = set()
set1.add('添加')
print(set1) {'添加'}

  • .update(可迭代对象) -> 迭代添加(循环添加) -> 类似列表中的 extend

set1 = set()
set1.update('Kevin') # {'v', 'K', 'e', 'i', 'n'}
set1.update([1, 2, 3]) # {1, 2, 3}
set1.update([1, 2, 3], [4, 5, 6]) # {1, 2, 3, 4, 5, 6}
set1.update({'k1': 1, 'k2': 2}) # {'k2', 'k1'}

2. 删

  • .pop() -> 随机删除

set1 = {'Kevin', 'AGA', 'Eric'}
set1.pop() # 返回值 Kevin
print(set1) # {'Eric', 'AGA'}

  • remove() -> 按元素删除

set1 = {'Kevin', 'AGA', 'Eric'}
set1.remove('AGA')
print(set1) # {'Kevin', 'Eric'}

  • .clear() -> 清空

set1 = {'Kevin', 'AGA', 'Eric'}
set1.clear()
print(set1) # set()

  • del dict -> 彻底从内存中删除该集合

set1 = {'Kevin', 'AGA', 'Eric'}
del set1

3. 交集 -> 两个集合中相同的元素

  • & 简写

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1 & set2 # {4, 5}

  • .intersection()

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1.intersection(set2) # {4, 5}

4. 反交集 -> 除了两个集合中相同的元素

  • 简写

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1 ^ set2 # {1, 2, 3, 6, 7, 8}

  • .symmetric_difference()

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1.symmetric_difference(set2) # {1, 2, 3, 6, 7, 8}


5. 并集 -> 两个集合合并成一个

  • | 简写

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1 | set2 # {1, 2, 3, 4, 5, 6, 7, 8}

  • .union()

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set2.union(set1) # {1, 2, 3, 4, 5, 6, 7, 8}

6. 差集 -> set1 - set2 -> set1 独有的元素而 set2 没有的


set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1 - set2 # {1, 2, 3} 

  • .difference()

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
set3 = set1.difference(set2) # {1, 2, 3}

7. 子集 -> set1 < set2 -> set1 里面的元素 set2 都有那么就说明 set1 是 set2 的子集

  • <

set1 = {1, 2, 3, }
set2 = {1, 2, 3, 4, 5, 6}
print(set1 < set2) # True

  • .issubset()

set1 = {1, 2, 3, }
set2 = {1, 2, 3, 4, 5, 6}
print(set1.issubset(set2)) # True 

8. 超集 -> set2 > set1 -> set1 里面的元素 set2 都有那么就说明 set1 是 set2 的子集

  • >

set1 = {1, 2, 3, }
set2 = {1, 2, 3, 4, 5, 6}
print(set2 > set1) # True

  • .issuperset()

set1 = {1, 2, 3, }
set2 = {1, 2, 3, 4, 5, 6}
print(set1.issuperset(set2)) # True

9. 去重

li = [1, 2, 33, 33, 2, 1, 4, 5, 6, 6]
li = list(set(li)) # [1, 2, 33, 4, 5, 6]

10. 将集合改变成不可变的数据类型 -> 只能只读

  • frozenset()

set1 = {1, 2, 3}
f = frozenset(set1) # frozenset({1, 2, 3})
f2 = frozenset('Kevin') # frozenset({'n', 'K', 'e', 'i', 'v'})